//
//  LGSNodeViewController.h
//  LogicSim
//
//  Created by Jeremy Pereira on 03/03/2013.
//
//

#import <Foundation/Foundation.h>

@class LGSDocument;
@class LGSNode;
@class LGSInputMappingDataSource;
/*!
 *  @brief Controls the node view part of the document window.
 *  @todo Disable buttons that can't be used at the moment.
 */
@interface LGSNodeViewController : NSObject <NSTableViewDataSource>

/*!
 *  @brief The table that displays the list of inputs.
 */
@property (nonatomic, weak) IBOutlet NSTableView* inputTable;
/*!
 *  @brief The table that displays the list of outputs.
 */
@property (nonatomic, weak) IBOutlet NSTableView* outputTable;
/*!
 *  @brief The document that owns this controller.
 */
@property (nonatomic, weak) IBOutlet LGSDocument* document;
/*!
 *  @brief The currently displayed node.
 *
 *  This controller will update its view when it changes.
 */
@property (nonatomic) LGSNode* displayedNode;

/*!
 *  @brief Data source for the input mapping view
 */
@property (nonatomic) IBOutlet LGSInputMappingDataSource* inputMappingDataSource;

/*!
 *  @brief Sent when the add input button is pressed.
 *
 *  @param sender object sending the aaction.
 *  @return nothing
 */
-(IBAction) addInput:(id) sender;
/*!
 *  @brief Sent when the add output button is pressed.
 *
 *  @param sender object sending the aaction.
 *  @return bothing
 */
-(IBAction) addOutput:(id) sender;

/*!
 *  @brief Remove the currently selected input
 *  @param sender object sending the action.
 *  @return nothing
 */
-(IBAction) removeInput:(id) sender;
/*!
 *  @brief Remove the currently selected output
 *  @param sender object sending the action.
 *  @return nothing
 */
-(IBAction) removeOutput:(id) sender;


@end
